{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "cc613cce",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From G:\\CSSoftware\\anaconda3\\envs\\tensorflow2\\lib\\site-packages\\tensorflow\\python\\compat\\v2_compat.py:101: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "non-resource variables are not supported in the long term\n"
     ]
    }
   ],
   "source": [
    "# tf2.0版本 \n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow.compat.v1 as tf\n",
    "\n",
    "tf.disable_v2_behavior()\n",
    "#清除default_graph和不断增加的节点\n",
    "tf.reset_default_graph()\n",
    "\n",
    "# tf.disable_eager_execution()         #可以用于从TensorFlow 1.x到2.x的复杂迁移项目的程序开头\n",
    "\n",
    "np.random.seed(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "8b740ea8",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# pip install matplotlib\n",
    "# 报错了吗？没有安装matplotlib 就装一下 https://blog.csdn.net/weixin_38314865/article/details/83141803\n",
    "\n",
    "#numpy 报错了？ 升级numpy \n",
    "# pip install --upgrade numpy报错"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d733547d",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "#等差数列生成 符合题目要求:1.生成 x_data，值为 [0, 100]之间500个等差数列数据集合作为样本特征\n",
    "x_data = np.linspace(0,100,500) # 这个linspace 别打错了\n",
    "x_data=Convert(x_data,0,100,500)#数据归一化\n",
    "a = 3.1234\n",
    "b = 2.98\n",
    "#根据目标线性方程 y=3.1234*x+2.98，生成相应的标签集合 y_data，1分；\n",
    "y = a * x_data + b\n",
    "y_data = a * x_data + b+ np.random.randn(*x_data.shape) * 0.4 #0.4噪声 视频要求 题目没要求\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "61bf6d4a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 区间变换,[0,100]化为[-1,1]\n",
    "def Convert(data,Min,Max,size):\n",
    "    # data：需要变换的数据或矩阵\n",
    "    # Min：最小值        \n",
    "    # Max：最大值\n",
    "    #size:样本个数\n",
    "    data = np.array(data)\n",
    "    Size = size\n",
    "    w = -2/(Min - Max)\n",
    "    b = (Min + Max)/(Min - Max)\n",
    "    for i in range(Size):\n",
    "        data[i] = data[i]*w + b\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "7e66418d",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2aeeea053c8>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#2.画出随机生成数据的散点图和想要通过学习得到的目标线性函数 y=3.1234*x+2.98\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.plot(x_data,y,color='red',linewidth=3)\n",
    "#help(plt.plor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "02a53470",
   "metadata": {},
   "outputs": [],
   "source": [
    "#定义数据的占位符,x为特征值，y为标签值\n",
    "x = tf.placeholder(\"float\", name = \"x\")\n",
    "y = tf.placeholder(\"float\",name =\"y\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c2ab2d00",
   "metadata": {},
   "outputs": [],
   "source": [
    "def model(x,w,b):\n",
    "    return tf.multiply(x,w)+b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3caf09d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "#构建模型 3.构建回归模型\n",
    "w = tf.Variable(1.0,name = \"w0\")\n",
    "b = tf.Variable(0.0,name = \"b0\")\n",
    "\n",
    "pred = model(x,w,b)\n",
    "\n",
    "#训练模型，10轮，每训练20个样本显示损失值\n",
    "train_epochs = 10\n",
    "step = 0\n",
    "print_step = 20# 20个样本显示瞬时\n",
    "learning_rate = 0.05\n",
    "loss_list = []   #初始化空列表，用于保存损失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "9e221544",
   "metadata": {},
   "outputs": [],
   "source": [
    "#损失函数  均方差\n",
    "loss_function = tf.reduce_mean(tf.square(y-pred))\n",
    "\n",
    "#优化器是什么?\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e5eb4d59",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Epoch:1  Step:5020  loss:0.131197810\n",
      "Train Epoch:1  Step:5040  loss:0.366075784\n",
      "Train Epoch:1  Step:5060  loss:0.004311353\n",
      "Train Epoch:1  Step:5080  loss:0.002796804\n",
      "Train Epoch:1  Step:5100  loss:0.090841033\n",
      "Train Epoch:1  Step:5120  loss:0.016047705\n",
      "Train Epoch:1  Step:5140  loss:0.350193202\n",
      "Train Epoch:1  Step:5160  loss:0.004568473\n",
      "Train Epoch:1  Step:5180  loss:0.041128483\n",
      "Train Epoch:1  Step:5200  loss:0.114690274\n",
      "Train Epoch:1  Step:5220  loss:0.061894696\n",
      "Train Epoch:1  Step:5240  loss:0.078019530\n",
      "Train Epoch:1  Step:5260  loss:0.006248083\n",
      "Train Epoch:1  Step:5280  loss:0.053734042\n",
      "Train Epoch:1  Step:5300  loss:0.000083192\n",
      "Train Epoch:1  Step:5320  loss:0.049296971\n",
      "Train Epoch:1  Step:5340  loss:0.039168112\n",
      "Train Epoch:1  Step:5360  loss:0.026956573\n",
      "Train Epoch:1  Step:5380  loss:0.123416886\n",
      "Train Epoch:1  Step:5400  loss:0.195363507\n",
      "Train Epoch:1  Step:5420  loss:0.151460096\n",
      "Train Epoch:1  Step:5440  loss:0.004886148\n",
      "Train Epoch:1  Step:5460  loss:0.003584903\n",
      "Train Epoch:1  Step:5480  loss:0.003805403\n",
      "Train Epoch:1  Step:5500  loss:0.166240722\n",
      "Train Epoch:2  Step:5520  loss:0.045915041\n",
      "Train Epoch:2  Step:5540  loss:0.293999046\n",
      "Train Epoch:2  Step:5560  loss:0.017996853\n",
      "Train Epoch:2  Step:5580  loss:0.000557708\n",
      "Train Epoch:2  Step:5600  loss:0.046766669\n",
      "Train Epoch:2  Step:5620  loss:0.001053588\n",
      "Train Epoch:2  Step:5640  loss:0.238414273\n",
      "Train Epoch:2  Step:5660  loss:0.002028356\n",
      "Train Epoch:2  Step:5680  loss:0.104970515\n",
      "Train Epoch:2  Step:5700  loss:0.044091504\n",
      "Train Epoch:2  Step:5720  loss:0.146961167\n",
      "Train Epoch:2  Step:5740  loss:0.174462184\n",
      "Train Epoch:2  Step:5760  loss:0.003679564\n",
      "Train Epoch:2  Step:5780  loss:0.137054682\n",
      "Train Epoch:2  Step:5800  loss:0.020633010\n",
      "Train Epoch:2  Step:5820  loss:0.122767940\n",
      "Train Epoch:2  Step:5840  loss:0.101310648\n",
      "Train Epoch:2  Step:5860  loss:0.075835004\n",
      "Train Epoch:2  Step:5880  loss:0.204929218\n",
      "Train Epoch:2  Step:5900  loss:0.122871719\n",
      "Train Epoch:2  Step:5920  loss:0.221876666\n",
      "Train Epoch:2  Step:5940  loss:0.020372465\n",
      "Train Epoch:2  Step:5960  loss:0.000021837\n",
      "Train Epoch:2  Step:5980  loss:0.014104983\n",
      "Train Epoch:2  Step:6000  loss:0.127666563\n",
      "Train Epoch:3  Step:6020  loss:0.085657395\n",
      "Train Epoch:3  Step:6040  loss:0.294557780\n",
      "Train Epoch:3  Step:6060  loss:0.018281674\n",
      "Train Epoch:3  Step:6080  loss:0.000617008\n",
      "Train Epoch:3  Step:6100  loss:0.046178892\n",
      "Train Epoch:3  Step:6120  loss:0.000957936\n",
      "Train Epoch:3  Step:6140  loss:0.236798629\n",
      "Train Epoch:3  Step:6160  loss:0.002194037\n",
      "Train Epoch:3  Step:6180  loss:0.106231838\n",
      "Train Epoch:3  Step:6200  loss:0.043230459\n",
      "Train Epoch:3  Step:6220  loss:0.148617744\n",
      "Train Epoch:3  Step:6240  loss:0.176317766\n",
      "Train Epoch:3  Step:6260  loss:0.003955969\n",
      "Train Epoch:3  Step:6280  loss:0.138700441\n",
      "Train Epoch:3  Step:6300  loss:0.021256283\n",
      "Train Epoch:3  Step:6320  loss:0.124212526\n",
      "Train Epoch:3  Step:6340  loss:0.102541305\n",
      "Train Epoch:3  Step:6360  loss:0.076818816\n",
      "Train Epoch:3  Step:6380  loss:0.206401855\n",
      "Train Epoch:3  Step:6400  loss:0.121846922\n",
      "Train Epoch:3  Step:6420  loss:0.223113284\n",
      "Train Epoch:3  Step:6440  loss:0.020706775\n",
      "Train Epoch:3  Step:6460  loss:0.000032562\n",
      "Train Epoch:3  Step:6480  loss:0.014322943\n",
      "Train Epoch:3  Step:6500  loss:0.127090320\n",
      "Train Epoch:4  Step:6520  loss:0.086393736\n",
      "Train Epoch:4  Step:6540  loss:0.294566572\n",
      "Train Epoch:4  Step:6560  loss:0.018286187\n",
      "Train Epoch:4  Step:6580  loss:0.000617979\n",
      "Train Epoch:4  Step:6600  loss:0.046169721\n",
      "Train Epoch:4  Step:6620  loss:0.000956409\n",
      "Train Epoch:4  Step:6640  loss:0.236772984\n",
      "Train Epoch:4  Step:6660  loss:0.002196752\n",
      "Train Epoch:4  Step:6680  loss:0.106251888\n",
      "Train Epoch:4  Step:6700  loss:0.043216780\n",
      "Train Epoch:4  Step:6720  loss:0.148644775\n",
      "Train Epoch:4  Step:6740  loss:0.176347598\n",
      "Train Epoch:4  Step:6760  loss:0.003960468\n",
      "Train Epoch:4  Step:6780  loss:0.138726726\n",
      "Train Epoch:4  Step:6800  loss:0.021266434\n",
      "Train Epoch:4  Step:6820  loss:0.124235719\n",
      "Train Epoch:4  Step:6840  loss:0.102561459\n",
      "Train Epoch:4  Step:6860  loss:0.076834679\n",
      "Train Epoch:4  Step:6880  loss:0.206425250\n",
      "Train Epoch:4  Step:6900  loss:0.121830605\n",
      "Train Epoch:4  Step:6920  loss:0.223133102\n",
      "Train Epoch:4  Step:6940  loss:0.020712128\n",
      "Train Epoch:4  Step:6960  loss:0.000032753\n",
      "Train Epoch:4  Step:6980  loss:0.014326253\n",
      "Train Epoch:4  Step:7000  loss:0.127081141\n",
      "Train Epoch:5  Step:7020  loss:0.086405374\n",
      "Train Epoch:5  Step:7040  loss:0.294566303\n",
      "Train Epoch:5  Step:7060  loss:0.018286316\n",
      "Train Epoch:5  Step:7080  loss:0.000617991\n",
      "Train Epoch:5  Step:7100  loss:0.046169516\n",
      "Train Epoch:5  Step:7120  loss:0.000956387\n",
      "Train Epoch:5  Step:7140  loss:0.236772642\n",
      "Train Epoch:5  Step:7160  loss:0.002196763\n",
      "Train Epoch:5  Step:7180  loss:0.106252357\n",
      "Train Epoch:5  Step:7200  loss:0.043216381\n",
      "Train Epoch:5  Step:7220  loss:0.148645148\n",
      "Train Epoch:5  Step:7240  loss:0.176348403\n",
      "Train Epoch:5  Step:7260  loss:0.003960559\n",
      "Train Epoch:5  Step:7280  loss:0.138727263\n",
      "Train Epoch:5  Step:7300  loss:0.021266503\n",
      "Train Epoch:5  Step:7320  loss:0.124235883\n",
      "Train Epoch:5  Step:7340  loss:0.102561459\n",
      "Train Epoch:5  Step:7360  loss:0.076834679\n",
      "Train Epoch:5  Step:7380  loss:0.206425682\n",
      "Train Epoch:5  Step:7400  loss:0.121830605\n",
      "Train Epoch:5  Step:7420  loss:0.223133102\n",
      "Train Epoch:5  Step:7440  loss:0.020712128\n",
      "Train Epoch:5  Step:7460  loss:0.000032753\n",
      "Train Epoch:5  Step:7480  loss:0.014326481\n",
      "Train Epoch:5  Step:7500  loss:0.127081141\n",
      "Train Epoch:6  Step:7520  loss:0.086405508\n",
      "Train Epoch:6  Step:7540  loss:0.294566572\n",
      "Train Epoch:6  Step:7560  loss:0.018286381\n",
      "Train Epoch:6  Step:7580  loss:0.000618003\n",
      "Train Epoch:6  Step:7600  loss:0.046169464\n",
      "Train Epoch:6  Step:7620  loss:0.000956387\n",
      "Train Epoch:6  Step:7640  loss:0.236772522\n",
      "Train Epoch:6  Step:7660  loss:0.002196774\n",
      "Train Epoch:6  Step:7680  loss:0.106252044\n",
      "Train Epoch:6  Step:7700  loss:0.043216381\n",
      "Train Epoch:6  Step:7720  loss:0.148645148\n",
      "Train Epoch:6  Step:7740  loss:0.176348403\n",
      "Train Epoch:6  Step:7760  loss:0.003960559\n",
      "Train Epoch:6  Step:7780  loss:0.138727441\n",
      "Train Epoch:6  Step:7800  loss:0.021266503\n",
      "Train Epoch:6  Step:7820  loss:0.124236055\n",
      "Train Epoch:6  Step:7840  loss:0.102561459\n",
      "Train Epoch:6  Step:7860  loss:0.076834679\n",
      "Train Epoch:6  Step:7880  loss:0.206425682\n",
      "Train Epoch:6  Step:7900  loss:0.121830605\n",
      "Train Epoch:6  Step:7920  loss:0.223133102\n",
      "Train Epoch:6  Step:7940  loss:0.020712264\n",
      "Train Epoch:6  Step:7960  loss:0.000032753\n",
      "Train Epoch:6  Step:7980  loss:0.014326481\n",
      "Train Epoch:6  Step:8000  loss:0.127081141\n",
      "Train Epoch:7  Step:8020  loss:0.086405508\n",
      "Train Epoch:7  Step:8040  loss:0.294566303\n",
      "Train Epoch:7  Step:8060  loss:0.018286316\n",
      "Train Epoch:7  Step:8080  loss:0.000617991\n",
      "Train Epoch:7  Step:8100  loss:0.046169516\n",
      "Train Epoch:7  Step:8120  loss:0.000956387\n",
      "Train Epoch:7  Step:8140  loss:0.236772642\n",
      "Train Epoch:7  Step:8160  loss:0.002196763\n",
      "Train Epoch:7  Step:8180  loss:0.106252357\n",
      "Train Epoch:7  Step:8200  loss:0.043216381\n",
      "Train Epoch:7  Step:8220  loss:0.148645148\n",
      "Train Epoch:7  Step:8240  loss:0.176348403\n",
      "Train Epoch:7  Step:8260  loss:0.003960559\n",
      "Train Epoch:7  Step:8280  loss:0.138727263\n",
      "Train Epoch:7  Step:8300  loss:0.021266503\n",
      "Train Epoch:7  Step:8320  loss:0.124235883\n",
      "Train Epoch:7  Step:8340  loss:0.102561459\n",
      "Train Epoch:7  Step:8360  loss:0.076834679\n",
      "Train Epoch:7  Step:8380  loss:0.206425682\n",
      "Train Epoch:7  Step:8400  loss:0.121830605\n",
      "Train Epoch:7  Step:8420  loss:0.223133102\n",
      "Train Epoch:7  Step:8440  loss:0.020712128\n",
      "Train Epoch:7  Step:8460  loss:0.000032753\n",
      "Train Epoch:7  Step:8480  loss:0.014326481\n",
      "Train Epoch:7  Step:8500  loss:0.127081141\n",
      "Train Epoch:8  Step:8520  loss:0.086405508\n",
      "Train Epoch:8  Step:8540  loss:0.294566572\n",
      "Train Epoch:8  Step:8560  loss:0.018286381\n",
      "Train Epoch:8  Step:8580  loss:0.000618003\n",
      "Train Epoch:8  Step:8600  loss:0.046169464\n",
      "Train Epoch:8  Step:8620  loss:0.000956387\n",
      "Train Epoch:8  Step:8640  loss:0.236772522\n",
      "Train Epoch:8  Step:8660  loss:0.002196774\n",
      "Train Epoch:8  Step:8680  loss:0.106252044\n",
      "Train Epoch:8  Step:8700  loss:0.043216381\n",
      "Train Epoch:8  Step:8720  loss:0.148645148\n",
      "Train Epoch:8  Step:8740  loss:0.176348403\n",
      "Train Epoch:8  Step:8760  loss:0.003960559\n",
      "Train Epoch:8  Step:8780  loss:0.138727441\n",
      "Train Epoch:8  Step:8800  loss:0.021266503\n",
      "Train Epoch:8  Step:8820  loss:0.124236055\n",
      "Train Epoch:8  Step:8840  loss:0.102561459\n",
      "Train Epoch:8  Step:8860  loss:0.076834679\n",
      "Train Epoch:8  Step:8880  loss:0.206425682\n",
      "Train Epoch:8  Step:8900  loss:0.121830605\n",
      "Train Epoch:8  Step:8920  loss:0.223133102\n",
      "Train Epoch:8  Step:8940  loss:0.020712264\n",
      "Train Epoch:8  Step:8960  loss:0.000032753\n",
      "Train Epoch:8  Step:8980  loss:0.014326481\n",
      "Train Epoch:8  Step:9000  loss:0.127081141\n",
      "Train Epoch:9  Step:9020  loss:0.086405508\n",
      "Train Epoch:9  Step:9040  loss:0.294566303\n",
      "Train Epoch:9  Step:9060  loss:0.018286316\n",
      "Train Epoch:9  Step:9080  loss:0.000617991\n",
      "Train Epoch:9  Step:9100  loss:0.046169516\n",
      "Train Epoch:9  Step:9120  loss:0.000956387\n",
      "Train Epoch:9  Step:9140  loss:0.236772642\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Epoch:9  Step:9160  loss:0.002196763\n",
      "Train Epoch:9  Step:9180  loss:0.106252357\n",
      "Train Epoch:9  Step:9200  loss:0.043216381\n",
      "Train Epoch:9  Step:9220  loss:0.148645148\n",
      "Train Epoch:9  Step:9240  loss:0.176348403\n",
      "Train Epoch:9  Step:9260  loss:0.003960559\n",
      "Train Epoch:9  Step:9280  loss:0.138727263\n",
      "Train Epoch:9  Step:9300  loss:0.021266503\n",
      "Train Epoch:9  Step:9320  loss:0.124235883\n",
      "Train Epoch:9  Step:9340  loss:0.102561459\n",
      "Train Epoch:9  Step:9360  loss:0.076834679\n",
      "Train Epoch:9  Step:9380  loss:0.206425682\n",
      "Train Epoch:9  Step:9400  loss:0.121830605\n",
      "Train Epoch:9  Step:9420  loss:0.223133102\n",
      "Train Epoch:9  Step:9440  loss:0.020712128\n",
      "Train Epoch:9  Step:9460  loss:0.000032753\n",
      "Train Epoch:9  Step:9480  loss:0.014326481\n",
      "Train Epoch:9  Step:9500  loss:0.127081141\n",
      "Train Epoch:10  Step:9520  loss:0.086405508\n",
      "Train Epoch:10  Step:9540  loss:0.294566572\n",
      "Train Epoch:10  Step:9560  loss:0.018286381\n",
      "Train Epoch:10  Step:9580  loss:0.000618003\n",
      "Train Epoch:10  Step:9600  loss:0.046169464\n",
      "Train Epoch:10  Step:9620  loss:0.000956387\n",
      "Train Epoch:10  Step:9640  loss:0.236772522\n",
      "Train Epoch:10  Step:9660  loss:0.002196774\n",
      "Train Epoch:10  Step:9680  loss:0.106252044\n",
      "Train Epoch:10  Step:9700  loss:0.043216381\n",
      "Train Epoch:10  Step:9720  loss:0.148645148\n",
      "Train Epoch:10  Step:9740  loss:0.176348403\n",
      "Train Epoch:10  Step:9760  loss:0.003960559\n",
      "Train Epoch:10  Step:9780  loss:0.138727441\n",
      "Train Epoch:10  Step:9800  loss:0.021266503\n",
      "Train Epoch:10  Step:9820  loss:0.124236055\n",
      "Train Epoch:10  Step:9840  loss:0.102561459\n",
      "Train Epoch:10  Step:9860  loss:0.076834679\n",
      "Train Epoch:10  Step:9880  loss:0.206425682\n",
      "Train Epoch:10  Step:9900  loss:0.121830605\n",
      "Train Epoch:10  Step:9920  loss:0.223133102\n",
      "Train Epoch:10  Step:9940  loss:0.020712264\n",
      "Train Epoch:10  Step:9960  loss:0.000032753\n",
      "Train Epoch:10  Step:9980  loss:0.014326481\n",
      "Train Epoch:10  Step:10000  loss:0.127081141\n",
      "w: 3.1424234\n",
      "b: 2.985063\n"
     ]
    },
    {
     "ename": "RuntimeError",
     "evalue": "Attempted to use a closed Session.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17772/2284192101.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     23\u001b[0m \u001b[0mx_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m5.79\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     24\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 25\u001b[1;33m \u001b[0mpredict\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msess\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpred\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mx_test\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     26\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"预测值：{:.9f}\"\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     27\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\CSSoftware\\anaconda3\\envs\\tensorflow2\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m    966\u001b[0m     \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    967\u001b[0m       result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[1;32m--> 968\u001b[1;33m                          run_metadata_ptr)\n\u001b[0m\u001b[0;32m    969\u001b[0m       \u001b[1;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    970\u001b[0m         \u001b[0mproto_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\CSSoftware\\anaconda3\\envs\\tensorflow2\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m_run\u001b[1;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[0;32m   1112\u001b[0m     \u001b[1;31m# Check session.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1113\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_closed\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1114\u001b[1;33m       \u001b[1;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Attempted to use a closed Session.'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1115\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgraph\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mversion\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1116\u001b[0m       raise RuntimeError('The Session graph is empty.  Add operations to the '\n",
      "\u001b[1;31mRuntimeError\u001b[0m: Attempted to use a closed Session."
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#SGD随机下降\n",
    "sess = tf.Session()\n",
    "init = tf.global_variables_initializer()\n",
    "with tf.Session() as sess:\n",
    "    sess.run(init)\n",
    "    for epoch in range(train_epochs):\n",
    "        for xs,ys in zip(x_data,y_data):\n",
    "            _,loss = sess.run([optimizer,loss_function],feed_dict={x:xs, y:ys})\n",
    "            loss_list.append(loss)     #将损失函数值增加到列表末端\n",
    "            step += 1     #步长加1\n",
    "            if step % print_step == 0:\n",
    "                print(\"Train Epoch:{0:d}  Step:{1:d}  loss:{2:.9f}\".format(epoch+1,step,loss))\n",
    "        b0temp = b.eval(session=sess)\n",
    "        w0temp = w.eval(session=sess)\n",
    "        plt.plot(x_data, w0temp*x_data+b0temp)\n",
    "        \n",
    "    plt.scatter(x_data,y_data,label='Original data')\n",
    "    plt.plot(x_data,y_data*sess.run(w) + sess.run(b),label='Fitted line',color='r',linewidth=3)\n",
    "    plt.legend(loc=2)\n",
    "    print(\"w:\",sess.run(w))\n",
    "    print(\"b:\",sess.run(b))\n",
    "    #通过训练出的模型预测 x=5.79 时 y 的值\n",
    "x_test = 5.79\n",
    "\n",
    "predict = sess.run(pred,feed_dict={x:x_test})\n",
    "print(\"预测值：{:.9f}\".format(predict))\n",
    "\n",
    "target = 3.1234 * x_test + 2.98 \n",
    "print(\"目标值：{:.9f}\".format(target))\n",
    "        \n",
    "            "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "9538514b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2aef40cda48>]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(loss_list,'r+')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "139d946b",
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(loss_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8dbda523",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1.067277,\n",
       " 2.3576355,\n",
       " 1.3753185,\n",
       " 1.1656994,\n",
       " 1.1486242,\n",
       " 1.483816,\n",
       " 1.5197,\n",
       " 1.1009128,\n",
       " 1.3621279,\n",
       " 1.071737,\n",
       " 22.320524,\n",
       " 16.650034,\n",
       " 4.651059,\n",
       " 7.8199587,\n",
       " 4.388063,\n",
       " 1.1876391,\n",
       " 3.4958768,\n",
       " 1.8912984,\n",
       " 1.053981,\n",
       " 1.5493768,\n",
       " 1.0053803,\n",
       " 1.1435875,\n",
       " 1.1753153,\n",
       " 1.8476132,\n",
       " 1.1210771,\n",
       " 1.5522277,\n",
       " 1.0092496,\n",
       " 1.148282,\n",
       " 1.1706684,\n",
       " 1.853124,\n",
       " 1.1174076,\n",
       " 1.5522728,\n",
       " 1.0093113,\n",
       " 1.1483572,\n",
       " 1.170593,\n",
       " 1.853213,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483587,\n",
       " 1.1705924,\n",
       " 1.8532137,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483576,\n",
       " 1.1705924,\n",
       " 1.8532143,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483587,\n",
       " 1.1705924,\n",
       " 1.8532137,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483576,\n",
       " 1.1705924,\n",
       " 1.8532143,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483587,\n",
       " 1.1705924,\n",
       " 1.8532137,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483576,\n",
       " 1.1705924,\n",
       " 1.8532143,\n",
       " 1.1173481,\n",
       " 1.067277,\n",
       " 2.3576355,\n",
       " 1.3753185,\n",
       " 1.1656994,\n",
       " 1.1486242,\n",
       " 1.483816,\n",
       " 1.5197,\n",
       " 1.1009128,\n",
       " 1.3621279,\n",
       " 1.071737,\n",
       " 22.320524,\n",
       " 16.650034,\n",
       " 4.651059,\n",
       " 7.8199587,\n",
       " 4.388063,\n",
       " 1.1876391,\n",
       " 3.4958768,\n",
       " 1.8912984,\n",
       " 1.053981,\n",
       " 1.5493768,\n",
       " 1.0053803,\n",
       " 1.1435875,\n",
       " 1.1753153,\n",
       " 1.8476132,\n",
       " 1.1210771,\n",
       " 1.5522277,\n",
       " 1.0092496,\n",
       " 1.148282,\n",
       " 1.1706684,\n",
       " 1.853124,\n",
       " 1.1174076,\n",
       " 1.5522728,\n",
       " 1.0093113,\n",
       " 1.1483572,\n",
       " 1.170593,\n",
       " 1.853213,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483587,\n",
       " 1.1705924,\n",
       " 1.8532137,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483576,\n",
       " 1.1705924,\n",
       " 1.8532143,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483587,\n",
       " 1.1705924,\n",
       " 1.8532137,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483576,\n",
       " 1.1705924,\n",
       " 1.8532143,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483587,\n",
       " 1.1705924,\n",
       " 1.8532137,\n",
       " 1.1173481,\n",
       " 1.552274,\n",
       " 1.0093123,\n",
       " 1.1483576,\n",
       " 1.1705924,\n",
       " 1.8532143,\n",
       " 1.1173481]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[x for x in loss_list if x>1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "12f7aacc",
   "metadata": {},
   "outputs": [],
   "source": [
    "a = tf.placeholder(tf.float32,name='a')\n",
    "b = tf.placeholder(tf.float32,name='b')\n",
    "c = tf.multiply(a,b,name='c')\n",
    "d = tf.subtract(a,b,name='d')\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "\n",
    "with tf.Session() as sess:\n",
    "#     sess.run(init)\n",
    "    res = sess.run([c,d],feed_dict={a:8.0,b:3.5})\n",
    "    rc,rd = sess.run([c,d],feed_dict={a:8.0,b:3.5})\n",
    "    print(res)\n",
    "    print(res[0])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
